'use strict';

const { Class, Student, Product, Op } = require('../model');

// 获取所有的角色（根据查找关键字过滤）
async function getAll(ctx, next) {
    let keyword = ctx.request.query.keyword;
    console.log(keyword);
    let obj = [];

    let students = await Student.findAll();
    let classes = await Class.findAll();

    /*
        1、先拼接到一个集合（这个集合在js中一个数组），再对数组中的数据进行筛选过滤，最终得到的结果返回给请求端
        2、先在数据库过滤，得到过滤后的学生数组和班级数组，再拼接到一个集合中，结果返回请求端

    */

    // 整合数据到一个集合
    students.forEach(item => {
        let tmpArr = classes.filter(bj => {
            return item.classId === bj.id
        })
        if (tmpArr.length > 0) {
            item.dataValues.className = tmpArr[0].classname
        }
    })

    //判断有无关键字，如果有则过滤，如果无，则直接返回结果

    let list;

    if (keyword) {
        list = students.filter(item => {
            // console.log(item);
            return item.dataValues.studentName.includes(keyword) 
            || item.dataValues.age.toString().includes(keyword) 
            || item.dataValues.className.includes(keyword);
        })

    } else {
        list = students;
    }




    // for (let item of students) {
    //     for (let element of classes) {
    //         if (item.dataValues.classId === element.dataValues.id) {
    //             obj.push({
    //                 id: item.dataValues.id,
    //                 studentName: item.dataValues.studentName,
    //                 age: item.dataValues.age,
    //                 className: element.dataValues.classname
    //             })
    //         }
    //     }
    // }


    // if (keyword) {

    //     let list = []

    //     for (let item of obj) {
    //         if (item.className.includes(keyword) || item.id == keyword || item.studentName.includes(keyword) || item.age == keyword) {
    //             list.push(item);
    //         }

    //     }

    //     obj = list;
    // }

    // console.log(obj);
    ctx.body = list;
}
// 根据id获取指定的角色
async function getById(ctx, next) {
    let id = ctx.request.params.id;
    let obj = await Student.findByPk(id);
    ctx.body = obj;
}
// 新增
async function addItem(ctx, next) {
    let obj = ctx.request.body;
    await Student.create(obj);
    ctx.body = '增加成功'
}
// 修改
async function updateItem(ctx, next) {
    let id = ctx.request.params.id;
    let obj = ctx.request.body;
    await Student.update(obj, {
        where: {
            id: id
        }
    });

    ctx.body = '修改成功';
}
//删除
async function delItem(ctx, next) {
    let id = ctx.request.params.id;
    await Student.destroy({
        where: {
            id: id
        }
    });

    ctx.body = '删除成功'
}

module.exports = {
    'get /students': getAll,
    'get /students/:id': getById,
    'post /students': addItem,
    'put /students/:id': updateItem,
    'del /students/:id': delItem,
}